﻿#ifndef _CONFIG_BASE_H_
#define _CONFIG_BASE_H_

#include "libconfig.h++"
#include <string>
using namespace libconfig;
using namespace std;
#include "storage_api.h"

class CConfigBase
{
public:
	CConfigBase();
	~CConfigBase();
	
	int LoadFile(char * file_path = NULL);
	int SaveFile(char * dest_path = NULL);

	int UpdateCfg();
	int    local_svr_flag; //本地IP
	string svr_ip;        //服务器IP		
	string rtsp_url;      //RTSP URL 地址
	
	string storage_path;   //录像路径 Z:\\

	string rtsp_live;      //rtsp在线视频名称
	string rtsp_live_sub;  //视频子码流
	string rtsp_replay;    //回放点播
	int   serverPort;     //端口
	string nor_dir;        //目录名称
	string title_dot;      //目录间隔
	string evt_dir;        //紧急录像名称
	string captrue_dir;    //抓拍目录
	string thumbail_dir;   //缩略图
	string simulate_data;  //模拟数据
	string file_fmt_ext;  //文件格式扩展名

	int    channel_num ; //通道数目
	int    pkt_mode;    //打包模式
	int    pkt_secs;    //打包时间
	int    pkt_sz_MB;   //按块大小来打包
	int    getfrm_sz;    //获取单帧视频的缓冲大小
	//紧急录像使用到的参数
	int    prepare_secs; //报警前预录像时间 单位sec
	int    io_continue;  //io解决报警录像后持续录像的时间
	int    nor_space;
	int    evt_space;
	int    pho_spcae;
	int    ctrl_svr_enable; //默认启动命令控制服务器
	int    mml_svr_enable; //启动流媒体服务器
	int   encode_enable; //编码服务 
	int   cache_enable;    //缓存模拟数据
	int   rtsp_svr_enable; //RTSP服务器开关
	int   rtsp_port;

	string push_svr_ip;  //推流服务器
	int    push_svr_port;      //端口     
	int    push_is_tcp; // TCP

	CH_INFO m_chInfo[16];   //通道信息
	StorageConfig cfg;     //存储配置信息
public:
	char * GetCfgPath()
	{
		return m_cfgPath;
	}
private:
	Config m_cfg;
	char   m_cfgPath[256];

};

#endif